#ifndef __GAMEMODIFIER_H__
#define __GAMEMODIFIER_H__

#include "cocos2d.h"

using namespace cocos2d;

class Character;
class CatsManager;
class ModifierInstruction;

class GameModifier
{

private:

	Character*		_pCharacter;
	CatsManager*	_pCatsManager;

	// Constructor? (the {} brackets) are needed here.
	GameModifier() {
		_pCharacter = 0;
		_pCatsManager = 0;
	};

	// Dont forget to declare these two. You want to make sure they
	// are unaccessable otherwise you may accidently get copies of
	// your singleton appearing.
	GameModifier(GameModifier const&);      // Don't Implement
	void operator = (GameModifier const&); 	// Don't implement


public:

	// Singleton class
	static GameModifier& getInstance()
	{
		static GameModifier instance; // Guaranteed to be destroyed.
							  	  	  // Instantiated on first use.
		return instance;
	}

	//========== DESTRUCTOR ==========
	~GameModifier(void);

	//===== FUNCTIONS =====
	void	init(Character* pCharacter, CatsManager* pCatsManager);
	void	modify(ModifierInstruction* pInstruction);

};

#endif // __GAMEMODIFIER_H__
